#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//int main()
//{
//	int a, b, c;
//	a = 5;
//	c = ++a;
//	b = ++c, c++, ++a, a++;
//	b += a++ + c;
//	printf("a = %d b = %d c = %d\n:", a, b, c);
//	return 0;
//}
//int main()
//{
//	int a, b, c;
//	a = 5;
//	c = ++a;// ++a：加给a+1，结果为6，用加完之后的结果给c赋值，因此：a = 6  c = 6
//	b = ++c, c++, ++a, a++;
//	// 逗号表达式的优先级，最低，这里先算b=++c, b得到的是++c后的结果，b是7
//	// b=++c 和后边的构成逗号表达式，依次从左向右计算的。
//	// 表达式结束时，c++和，++a,a++会给a+2，给c加1，此时c：8，a：8，b:7
//	b += a++ + c; // a先和c加，结果为16，在加上b的值7，比的结果为23，最后给a加1，a的值为9
//	printf("a = %d b = %d c = %d\n:", a, b, c); // a:9, b:23, c:8
//	return 0;
//}
//int main()
//{
//	int a = 0;
//	int b = 0;
//	scanf("%d %d", &a, &b);
//	a = a ^ b;
//	b = b ^ a;
//	a = b ^ a;
//	printf("%d %d", a, b);
//
//	return 0;
//}
//不允许创建临时变量，交换两个整数的内容
//
//int main()
//{
//    int n = 0;
//    scanf("%d", &n);
//    int i = 0;
//    int count = 0;
//    int k = 1;
//    int ret = 0;
//    for (i = 0; i < 32; i++)
//    {
//        ret = n & k;
//        if (ret == 1)
//        {
//            count++;
//        }
//      n=n>>1;
//    }
//    printf("%d", count);
//
//    return 0;
//}
//输入一个整数 n ，输出该数32位二进制表示中1的个数。其中负数用补码表示。
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int i = 0;
//	int ret1 = 0;
//	int ret2 = 0;
//	int m = n >> 1;
//	printf("偶数位：");
//	for (i = 1; i < 17; i++)
//	{		
//		 ret1 = n & 1;
//		printf("%d ", ret1);
//		n = n >> 2;
//	}
//		printf("\n");
//		printf("奇数位：");
//	for (i = 1; i < 17; i++)
//	{	
//		 ret2 = m & 1;
//		printf("%d ", ret2);
//		m = m >> 2;
//
//	}
//	return 0;
//}----自己写的，除了代码的简洁以外，不足在于顺序打印反了
//获取一个整数二进制序列中所有的偶数位和奇数位，分别打印出二进制序列
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	for (int i = 31; i >= 1; i -= 2)
//	{
//		printf("%d ", (n >> i) & 1);
//	}
//	printf("\n");
//
//	for (int i = 30; i >= 0; i -= 2)
//	{
//		printf("%d ", (n >> i) & 1);
//	}
//	printf("\n");
//
//	return 0;
//}
//获取一个整数二进制序列中所有的偶数位和奇数位，分别打印出二进制序列

//int main()
//{
//    int x = 0;
//    int y = 0;
//    int i = 0;
//    int ret1 = 0;
//    int ret2 = 0;
//    int count = 0;
//    scanf("%d %d", &x, &y);
//    for (i = 0; i < 32; i++)
//    {
//        ret1 = x & 1;
//        ret2 = y & 1;
//        if (ret1 != ret2)
//        {
//            count++;
//        }
//        x = x >> 1;
//        y = y >> 1;
//    }
//    printf("%d", count);
//    return 0;
//}
////输入两个整数，求两个整数二进制格式有多少个位不同